<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
for (let i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 550);
}
// console.log('outer', i); // i 的值为5， 因为 var 声明的变量，没有块级「作用域」

// 面试问题：什么叫 作用域？
  // 确定变量的值；  ->  JS的作用域有 「全局作用域」和「函数作用域」、「块级作用域」
    // 若作用域中 使用了 某个 变量，先在 本作用域中 寻找 有没有 该变量的声明
    // 若本作用域中没有该变量的声明，则会向上层作用域寻找变量的值
    // 若一直找到 全局作用域，还没找到该变量的声明；则报 未定义的 错误。
  // 注：作用域内值的确定，只能由子作用域向外层作用域寻找；而不能逆向寻找。


</script>